#ifndef _BSP_EQ_H
#define _BSP_EQ_H

#define little_endian_read_16(buf, ofs)         *(uint16_t *)((uint8_t *)buf + (ofs))
#define little_endian_read_32(buf, ofs)         *(uint32_t *)((uint8_t *)buf + (ofs))
#define HUART_BUFFER_LEN                        (260+10)
#define EQ_BUFFER_LEN                           (260+10)
#define EQ_TX_BUF_LEN                           12
#define EQ_CRC_SEED                             0xffff
#define EQ_BAND_NUM                             12
#define CAL_FIX(x)		                        ((int)(x * (1 << 27)))

enum{
    EQ_DBG_HUART = 1,
    EQ_DBG_WTEST,
};

extern u8 eq_rx_buf[EQ_BUFFER_LEN];
extern u8 *huart_rx_buf;

typedef struct {
    u32 *addr;
    u32 *len;
} eq_param;

typedef struct {
    u8 type;    //调试资源类型    0：表示当前调试资源为EQ  1:表示当前调试资源为DRC
    u8 rx_type; //huart 接受标志  0：处理完接受的数据      1:表示正在接受处理数据
    u16 pre_crc;//记录上一次资源文件的校验位，若校验位一致则可以认为资源文件一致不再重复有效资源
}eq_dbg_cb_t;

extern eq_dbg_cb_t eq_dbg_cb;

void bsp_eq_parse_cmd(void);
void eq_dbg_init(void);
u8 bsp_eq_rx_done(u8* rx_buf);
void huart_putcs(const void *buf, uint len);
void dsp_effect_tx_ack(u8 *head_tag, u8 ack);
uint calc_crc(void *buf, uint len, uint seed);
void huart_rx_kick(void);
#endif
